#include "pileStructure.h"

void initPileStructure()
{
	int i;
	
	for(i=0;i<PILE_STRUCTURE_SIZE;i++)
	{
		pileStructure[i] = NULL;
	}
	
	nbPileStructure = 0;
}

void ajoutPileStructure(void * structure, int type)
{
	structureLigne new  = malloc(sizeof(struct sstructureLigne));
	
	new->type = type;
	new->valeur = structure;
	
	pileStructure[nbPileStructure] = new;
	nbPileStructure ++;
}

void suppressionTetePileStructure ()
{
	nbPileStructure --;
	pileStructure[nbPileStructure] = NULL;
}

structureID nouvelleStructureID(char * nom, int type)
{
	structureID new  = malloc(sizeof(struct sstructureID));
	
	new->nom = nom;
	new->type = type;
	
	return new;
}

void ajoutPileStructureID(char * nom, int type)
{
	ajoutPileStructure((void *) nouvelleStructureID(nom, type),PILESTRUCTURE_TYPE_ID);
}

structureIFTHENELSE nouvelleStructureIFTHENELSE(int xfaux, int xfin)
{
	structureIFTHENELSE new  = malloc(sizeof(struct sstructureIFTHENELSE));
	
	new->xfaux = xfaux;
	new->xfin = xfin;
	
	return new;
}

void ajoutPileStructureIFTHENELSE(int xfaux, int xfin)
{
	ajoutPileStructure((void *) nouvelleStructureIFTHENELSE(xfaux, xfin),PILESTRUCTURE_TYPE_IFTHENELSE);
}

structureFONCTION nouvelleStructureFONCTION(char * nom, int nbArg, int * typeArg, int typeRetour)
{
	structureFONCTION new  = malloc(sizeof(struct sstructureFONCTION));
	
	new->nom = nom;
	new->nbArg = nbArg;
	new->typeArg = typeArg;
	new->typeRetour = typeRetour;
	
	return new;
}

void ajoutPileStructureFONCTION(char * nom, int nbArg, int * typeArg, int typeRetour)
{
	ajoutPileStructure((void *) nouvelleStructureFONCTION(nom, nbArg, typeArg, typeRetour),PILESTRUCTURE_TYPE_FONCTION);
}

structureWHILE nouvelleStructureWHILE(int xdebut, int xfin)
{
	structureWHILE new  = malloc(sizeof(struct sstructureWHILE));
	
	new->xdebut = xdebut;
	new->xfin = xfin;
	
	return new;
}

void ajoutPileStructureWHILE(int xdebut, int xfin)
{
	ajoutPileStructure((void *) nouvelleStructureWHILE(xdebut, xfin),PILESTRUCTURE_TYPE_WHILE);
}
